﻿using NP.BPMReportPlatform.CustomerProfileConfig.Dto;
using NP.BPMReportPlatform.Entities.BPM_Business;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace NP.BPMReportPlatform.CustomerProfileConfig
{
    /// <summary>
    /// 客户档案维护接口
    /// </summary>
    public interface ICustomerProfileConfigAppService : IApplicationService
    {
        /// <summary>
        /// 根据送达方编码找售达方编码
        /// </summary>
        /// <param name="business"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        Task<List<SDFInfoOutput>> GetSDFInfo(string business, string code);
        /// <summary>
        /// 查询数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetCustomerProfileConfigOutput>> GetAllAsync(GetCustomerProfileConfigInput input);

        /// <summary>
        /// 查询检测指标
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<List<CustomerProfileConfigDetail>> GetIndicatorsList(Guid id);

        /// <summary>
        /// 查询修改记录
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<List<EditRecordListOutput>> GetEditRecordList(Guid id);

        /// <summary>
        /// 查询修改记录详情
        /// </summary>
        /// <param name="id"></param>
        /// <param name="version"></param>
        /// <returns></returns>
        Task<List<EditRecordDetailOutput>> GetEditRecordDetail(Guid id, int version);

        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<GetCustomerProfileConfigOutput>> ExportAsync(GetCustomerProfileConfigInput input);

        /// <summary>
        /// 保存客户档案配置
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task SaveAsync(SaveCustomerProfileConfigInput input);

        /// <summary>
        /// 删除客户档案配置
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task DeleteAsync(Guid id);

        /// <summary>
        /// 批量导入
        /// </summary>
        /// <param name="bytes"></param>
        /// <returns></returns>
        Task<ImportResultExt<ImportCustomerProfileConfigTemplate>> ImporterExcel(byte[] bytes);
    }
}
